﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;

namespace Anagramme.Contracts
{
    /// <summary>
    /// Validateur de la longueur maximale des mots
    /// </summary>
    public static class WordsValidator
    {
        /// <summary>
        /// Contrôle la validité de la longueur maximale des mots
        /// </summary>
        /// <param name="value">Valeur à valider</param>
        /// <param name="context">Contexte de validation</param>
        /// <returns>Retourne <see cref="ValidationResult.Success"/> si la valeur est valide, sinon une erreur de validation.</returns>
        public static ValidationResult ValidateMaxWordsLength(int value, ValidationContext context)
        {
            if (object.ReferenceEquals(context, null))
            {
                throw new ArgumentNullException("context");
            }
            var vm = (context.ObjectInstance as LobbyInfo);
            if (object.ReferenceEquals(vm, null))
            {
                throw new ArgumentException("", "context");
            }
            else if (vm.MinWordsLength > value)
            {
                return new ValidationResult(null);
            }
            return ValidationResult.Success;
        }

        /// <summary>
        /// Contrôle la validité de la longueur minimale des mots
        /// </summary>
        /// <param name="value">Valeur à valider</param>
        /// <param name="context">Contexte de validation</param>
        /// <returns>Retourne <see cref="ValidationResult.Success"/> si la valeur est valide, sinon une erreur de validation.</returns>
        public static ValidationResult ValidateMinWordsLength(int value, ValidationContext context)
        {
            if (object.ReferenceEquals(context, null))
            {
                throw new ArgumentNullException("context");
            }
            var vm = (context.ObjectInstance as LobbyInfo);
            if (object.ReferenceEquals(vm, null))
            {
                throw new ArgumentException("", "context");
            }
            else if (vm.MaxWordsLength < value)
            {
                return new ValidationResult(null);
            }
            return ValidationResult.Success;
        }
    }
}
